/*弹出层*/
/*
	参数解释：
	title	标题
	url		请求的url
	id		需要操作的数据id
	w		弹出层宽度（缺省调默认值）
	h		弹出层高度（缺省调默认值）
*/
function pop_show(title,url,w,h,f){
	if (title == null || title == '') {
		title=false;
	};
	if (url == null || url == '') {
		url="404.html";
	};
	if (w == null || w == '') {
		w=800;
	};
	if (h == null || h == '') {
		h=($(window).height() - 50);
	};
	layer.open({
		type: 2,
		area: [w+'px', h +'px'],
		fix: false, //不固定
		maxmin: true,
		shadeClose: false,
		shade:0.4,
		title: title,
		content: url,
		end: f
	});
}

/*关闭弹出框口*/
function pop_close(){
	var index = parent.layer.getFrameIndex(window.name);
	parent.layer.close(index);
}

//创建一个util 对象, 以这个对象作为载体, 创建各种公共方法
var util = {};

/**
 * 创建util 的send Ajax属性, 这个 属性赋值为一个形参为obj 的 function, 
 * 这个obj去拼装Ajax要使用的参数和一些业务上的参数
 */
util.sendAjax = function(obj) {
    var url = obj.url;       //这个obj有url 属性
    var data = obj.data;     //有data 属性
    var async = obj.async;   //.........  都是Ajax要的
    var loadFlag = obj.loadFlag==undefined?false:obj.loadFlag;
    var type = obj.type;
    var cache = obj.cache;
    var successfn = obj.success;
    var unSuccess = obj.unSuccess;
    var completefn = obj.complete;
    var notice = obj.notice;
    async = (async==null || async==="" || typeof(async)=="undefined")? "true" : async;
    cache = (cache==null || cache==="" || typeof(cache)=="undefined")? "false" : cache;
    type = (type==null || type==="" || typeof(type)=="undefined")? "GET" : type.toLocaleUpperCase();
    data = (data==null || data==="" || typeof(data)=="undefined")? {"date": new Date().getTime()} : data;
    notice = (notice==null || notice==="" || typeof(notice)=="undefined")? "true" : notice;

    if (successfn==null || successfn==="" || typeof(successfn)=="undefined") {
        successfn = function (info) {

        }
    }

    if (unSuccess==null || unSuccess==="" || typeof(unSuccess)=="undefined") {
        unSuccess = function (info) {

        }
    }

    if (completefn==null || completefn==="" || typeof(completefn)=="undefined") {
        completefn = function () {
        }
    }

    //POST,PUT 转化成json字符串
    if(type=="POST" || type=="PUT"){

    }
    //上面的 obj 那么 多参数就是为了拼装 一个Ajax 请求所构成的参数;
    $.ajax({
        type: type,
        async: async,
        data: data,
        url: url,
        cache: cache,
        contentType : "application/x-www-form-urlencoded;charset=UTF-8",
        dataType: 'json',  //要服务器返回json
        timeout:30000,    //30秒没有结果, 则判断失败, so 从前端 -> Java ->db->Java -> 前端 只有30秒, 不要让你的db 一查要半天, 其实我告诉你, if是用户, 10s 他都受不了
        beforeSend: function(XMLHttpRequest){
            //判断要不要加载圈圈
            if (loadFlag) {
                layer.load();
            }
        },
        success: function(json){
            //从后端返回来的操作成不成功
            if (json.code == '0') {
                //成功
            	if (notice) {
                    window.top.layer.msg(json.msg, {icon: 1, offset: 'auto'});
				}
                successfn(json);
            } else {
                //不成功
                window.top.layer.msg(json.msg, {icon: 2, offset: 'auto'});
                unSuccess(json);
            }
        },
        //服务器出异常了, 这个是要坚决避免的, 很危险, 如果是查询的还好, if 是写入的, 写入了一半, 结果来个异常, 前面那一半就是脏数据了
        error: function(XMLHttpRequest, status, error) {
            if (XMLHttpRequest.status == 401) {
                layer.msg('请登录后进行操作', {icon: 5});
            } else if (XMLHttpRequest.status == 403) {
                layer.msg('没有权限', {icon: 5});
            } else if (XMLHttpRequest.status == 404) {
                layer.msg('页面未找到', {icon: 5});
            } else if (XMLHttpRequest.status == 500) {
                layer.msg('服务异常，请稍候重试', {icon: 5});
            }else if(XMLHttpRequest.status == 999){
                location.href = "/login";
            } else {
                layer.msg('网络异常，请检查网络连接', {icon: 5});
			}
        },
        complete :function(XMLHttpRequest, TS){
        //Ajax 过程结束的时候关闭掉圈圈
            completefn();
            if (loadFlag) {
            	layer.closeAll('loading');
            }
        }
    });
};



//移动电话验证，已做限制
util.isMobile = function(val) {
    var str = val.trim();
    if(str.length!=0){
        reg= /^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
        if(!reg.test(str)){
            return false;
        }else{
            return true;
        }
    }else{
        return false;
    }
}

//邮箱验证
util.isEmail = function(val) {
    var str = val.trim();
    if(str.length!=0){
        reg=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
        if(!reg.test(str)){
            return false;
        }else{
            return true;
        }
    }else{
        return false;
    }
}

//邮编验证
util.isPostNo = function(val) {
    var str = val.trim();
    if(str.length!=0){
        reg=/^[1-9]d{5}(?!d)$/;
        if(!reg.test(str)){
            return false;
        }else{
            return true;
        }
    }else{
        return false;
    }
}

//金额格式化
function numberFormat(number, decimals, dec_point, thousands_sep) {
    /*
    　　 * 参数说明：
    　　 * number：要格式化的数字
    　　 * decimals：保留几位小数
    　　 * dec_point：小数点符号
    　　 * thousands_sep：千分位符号
    　　 * */
    number = (number + '').replace(/[^0-9+-Ee.]/g, '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 2 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function(n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.ceil(n * k) / k;
        };

    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    var re = /(-?\d+)(\d{3})/;
    while(re.test(s[0])) {
        s[0] = s[0].replace(re, "$1" + sep + "$2");
    }

    if((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}

//判断是否为空
function isEmpty(obj){
    if(typeof obj == "undefined" || obj == null || obj == ""){
        return true;
    }else{
        return false;
    }
}